/*
 * Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package java.lang;

/**
 * 抽象类 {@code Number} 是表示可转换为基本类型 {@code byte}、{@code double}、
 * {@code float}、{@code int}、{@code long} 和 {@code short} 的数值的平台类的超类。
 *
 * 从特定 {@code Number} 实现的数值到给定基本类型的转换的具体语义
 * 由相关的 {@code Number} 实现定义。
 *
 * 对于平台类，转换通常类似于 <cite>The Java&trade; Language Specification</cite>
 * 中定义的用于基本类型之间转换的窄化基本转换或扩展基本转换。
 * 因此，转换可能会丢失有关数值总体大小的信息，可能会丢失精度，
 * 甚至可能返回与输入符号不同的结果。
 *
 * 有关转换详细信息，请参阅给定 {@code Number} 实现的文档。
 *
 * @author      Lee Boynton
 * @author      Arthur van Hoff
 * @jls 5.1.2 Widening Primitive Conversions
 * @jls 5.1.3 Narrowing Primitive Conversions
 * @since   JDK1.0
 */
public abstract class Number implements java.io.Serializable {
    /**
     * 将指定数字的值作为 {@code int} 返回，这可能涉及舍入或截断。
     *
     * @return  此对象转换为 {@code int} 类型后表示的数值。
     */
    public abstract int intValue();

    /**
     * 将指定数字的值作为 {@code long} 返回，这可能涉及舍入或截断。
     *
     * @return  此对象转换为 {@code long} 类型后表示的数值。
     */
    public abstract long longValue();

    /**
     * 将指定数字的值作为 {@code float} 返回，这可能涉及舍入。
     *
     * @return  此对象转换为 {@code float} 类型后表示的数值。
     */
    public abstract float floatValue();

    /**
     * 将指定数字的值作为 {@code double} 返回，这可能涉及舍入。
     *
     * @return  此对象转换为 {@code double} 类型后表示的数值。
     */
    public abstract double doubleValue();

    /**
     * 将指定数字的值作为 {@code byte} 返回，这可能涉及舍入或截断。
     *
     * <p>此实现返回将 {@link #intValue} 的结果转换为 {@code byte} 的结果。
     *
     * @return  此对象转换为 {@code byte} 类型后表示的数值。
     * @since   JDK1.1
     */
    public byte byteValue() {
        return (byte)intValue();
    }

    /**
     * 将指定数字的值作为 {@code short} 返回，这可能涉及舍入或截断。
     *
     * <p>此实现返回将 {@link #intValue} 的结果转换为 {@code short} 的结果。
     *
     * @return  此对象转换为 {@code short} 类型后表示的数值。
     * @since   JDK1.1
     */
    public short shortValue() {
        return (short)intValue();
    }

    /** 使用 JDK 1.0.2 的 serialVersionUID 以保持互操作性 */
    private static final long serialVersionUID = -8742448824652078965L;
}
